package com.pn.mapper;

import com.pn.entity.Auth;
import com.pn.entity.Role;
import com.pn.page.Page;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface RoleMapper {

    /**
     * 查询所有角色
     *
     * @return 所有角色
     */
    List<Role> findAllRole();

    /**
     * 根据用户id查用户角色
     *
     * @param userId 用户id
     * @return 用户角色集合
     */
    List<Role> findUserRoleByUid(Integer userId);

    /**
     * 根据角色名称查询角色id
     *
     * @param roleName 角色名称
     * @return 角色id集合
     */
    Integer findRoleIdByRName(String roleName);

    /**
     * 分页查询角色
     *
     * @param page 页码对象
     * @param role 查询条件类
     * @return 符合条件的角色
     */
    List<Role> findRoleByPage(@Param("page") Page page, @Param("role") Role role);

    /**
     * 根据角色名称或者角色代码查询角色是否存在
     *
     * @param roleName 角色名称
     * @param roleCode 角色代码
     * @return
     */
    Role findRoleByNameOrCode(@Param("roleName") String roleName, @Param("roleCode") String roleCode);

    /**
     * 添加角色
     *
     * @param role 角色对象
     * @return 影响行数
     */
    int insertRole(Role role);

    /**
     * 统计角色数量
     *
     * @param role 条件封装类
     * @return 角色数量
     */
    int findRoleRowCount(Role role);

    /**
     * 修改角色描述
     *
     * @param role 角色参数对象
     * @return 影响行数
     */
    int updateRoleDescByRid(Role role);

    /**
     * 删除角色
     *
     * @param roleId 角色id
     * @return 影响行数
     */
    int deleteRoleByRid(Integer roleId);

    /**
     * 修改角色状态 0 禁用 1 启用
     *
     * @param role 角色对象
     * @return 影响行数
     */
    int updateRoleStateByRid(Role role);

}